package cn.qingyun.gis.modules.scenes.mapper;

import cn.qingyun.gis.modules.scenes.entity.PoiScenario;
import cn.qingyun.gis.modules.scenes.entity.PoiScenarioChannel;
import cn.qingyun.gis.modules.scenes.request.PoiListRequest;
import cn.qingyun.gis.modules.scenes.request.PoiNumberInfoRequest;
import cn.qingyun.gis.modules.scenes.request.QueryByWordRequest;
import cn.qingyun.gis.modules.scenes.response.PoiListResponse;
import cn.qingyun.gis.modules.scenes.response.PoiNumberInfoResponse;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author guest
 * @since 2024-06-13
 */
public interface PoiScenarioChannelMapper extends BaseMapper<PoiScenarioChannel> {
    /**
     * 根据 直销/自有人员 分页获取
     */
    IPage<PoiListResponse> selectPagePoiByPhone(@Param("page") IPage<PoiScenario> poiIPage, @Param("request") PoiListRequest request);

    /**
     * 根据角色权限查询poi 沿街+5大场景
     * @param poiIPage
     * @param request
     * @return
     */
    IPage<PoiListResponse> selectPagePoiCommon(@Param("page") IPage<?> poiIPage, @Param("request") PoiListRequest request,@Param("table")String table);

    /**
     * 根据角色权限查询poi 沿街+5大场景 改造
     * @param poiIPage
     * @param request
     * @param table
     * @param level
     * @return
     */
    IPage<PoiListResponse> selectPagePoiCommonNew(@Param("page") IPage<?> poiIPage, @Param("request") PoiListRequest request,@Param("table")String table,@Param("level") Integer level);

    /**
     * 关键字搜索
     * @param request
     * @param table
     * @param typeList
     * @param flag
     * @return
     */
    List<PoiListResponse> selectPoiLikeCommon(@Param("request") QueryByWordRequest request,@Param("table")String table, @Param("typeList") List<String> typeList, @Param("flag") Integer flag);

    /**
     * 关键字搜索--改造
     * @param request
     * @param table
     * @param typeList
     * @param flag
     * @return
     */
    List<PoiListResponse> selectPoiLikeCommonNew(@Param("request") QueryByWordRequest request,@Param("table")String table, @Param("typeList") List<String> typeList, @Param("flag") Integer flag,@Param("level")Integer level);

    /**
     * 判断是否有渠道权限
     * @param table
     * @param channelCode
     * @return
     */
    int selectCountByChannelCode(@Param("table") String table, @Param("channelCode") String channelCode);
    /**
     * 判断当前工号是否已经维护
     * */

    int selectCountByPhone(@Param("phone") String phone, @Param("channelCode") String channelCode);

    /**
     * 判断直销、自有人员
     * @param phone 工号
     * @return 返回值
     */
    int selectCountByTelNum(@Param("phone") String phone,@Param("type") Integer type,@Param("table") String table);
    /**
     * 根据 直销/自有人员 列表获取
     * */
    List<PoiListResponse> selectPoiByPhone(@Param("request") QueryByWordRequest request);

    /**
     * 根据poi_id更新责任人员表
     * @param table
     * @param list
     * @return
     */
    int insertOrUpdateByPoiId(@Param("table") String table,@Param("list") List<?> list);

    /**
     * 责任人的数量统计
     * @param tables
     * @param poiNumberInfoRequest
     * @return
     */
    int selectCountPoiNumberInfo(@Param("request") PoiNumberInfoRequest poiNumberInfoRequest, @Param("tables") List<String> tables,@Param("level")Integer level);

    int selectCountPoiNumberInfoSub(@Param("request") PoiNumberInfoRequest poiNumberInfoRequest, @Param("table")String table,@Param("level")Integer level);

    /**
     * 查询责任人列表
     * @param poiNumberInfoRequest
     * @param tables
     * @param level
     * @return
     */
    List<PoiNumberInfoResponse> selectPoiNumberInfoPage(@Param("request") PoiNumberInfoRequest poiNumberInfoRequest, @Param("tables") List<String> tables, @Param("level")Integer level);

    List<PoiNumberInfoResponse> selectPoiNumberInfoPageSub(@Param("request") PoiNumberInfoRequest poiNumberInfoRequest, @Param("tables") List<String> tables, @Param("level")Integer level);
}
